\chapter{前言}
我曾经在一家小公司工作，由于工作需要我们需要制作一个网页分析工具。
这个需求与时下非常流行的机器学习相关，它需要训练集和测试集。
标注数据总是很痛苦且不能简单的找些人来做的工作，为了保证数据的质量，我们必须自己动手。
提高标注的效率就成了关键，当时chrome浏览器已经非常流行，任何用它开发过程前端的同学都应该能够感到它的无比强大。
因此我们的页面标注工具也基于chrome，使用js开发，这个工具很快就搞定了。
但这只是问题的开始，很快我们发现前段标注的数据，以DOM格式存储与后端的DOM格式有极大的不同。
这时候我们才意识到原来DOM与XML不同，它的规范是非常复杂的。
很快一个新的需求被提了出来，我们需要网页的位置信息。


当chromium的核心WebKit被极大简化的时候，性能终于满足的需求，我们可以轻而易举的处理以十亿计的网页了。
它同时产生了一个副产品：我们对WebKit的理解极大的提升。
从那以后，每当看到一个非常好的开源项目的时候，如果我想去学习，我的第一方法总是'简化一边，仅留核心'。


Linux是一个我仰慕已久的开源项目，纵向深入学习却总没时间。
这次终于有时间了，我要尝试用“重构”的方式来学习Linux内核。

于此，我将记录下整个过程，供大家参考，希望也能为更多的人提供一种学习开源项目的方法。
也许他不好，但它的确很适合我。
